Many processing systems require separate circuits that perform synchronized operations with one another. For example, in systems requiring a high degree of reliability, redundant circuits are often implemented to operate in parallel and are synchronized in a lockstep manner. Lockstep is a technique used to monitor and verify the operation of a system. In processor lockstep, two processors are synchronized to the same state during system start-up. Following synchronization, the state of the two processors is identical from clock cycle to clock cycle. While processors are operating in identical states they are said to be operating in lockstep. The processors receive identical input and the output of each processor is monitored and compared. If a difference between the output of the processors is encountered, an error is detected and mitigation techniques can be employed.
Lockstepping may also be employed in other situations. For example, in a shared memory multiprocessor System-on-Chip (SoC), two or more processors operate on a common set of data stored in a shared memory. For the processors to work properly, lockstep synchronization is commonly employed to control access to the shared memory.
One problem encountered in lockstep synchronization is the synchronization of clock signals used by two or more synchronized circuits. If synchronized circuits use separate clocks, the clocks must be synchronized to initialize the circuits into a common state. Even when driven by a common clock, generated signals may arrive at different components at different times due to: different lengths of signal lines; material imperfections; or variations in temperature, capacitance, and intermediate devices. Even after synchronization is achieved, clock signals are not perfectly stable and tend to differ after some amount of time. This is known as clock drift. Even after clocks are synchronized, processor instruction executions must also be synchronized. Thus, as part of the synchronization process processor instructions must be synchronized.
As clock signal frequencies employed in integrated circuitry increases, it becomes more difficult to synchronize and maintain lockstep. With processors operating in the gigahertz range and source oscillators operating at a fraction of the processor frequency it is difficult to align two or more processors in lockstep. Should the processors be physically separated, silicon and board delays can compound the problem.
One or more embodiments of the present invention may address one or more of the above issues.